package com.sunwayhorizo.health.business.registries.person;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.patad.empi.MedicalCardDTO;
import com.sunwayhorizo.health.business.dto.patad.empi.PatientBaseInfoDTO;
import com.sunwayhorizo.health.business.dto.registries.EntitysDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;
import com.sunwayhorizo.health.hl7.rim.Person;

@Local
public interface PersonManagerLocal
{

    /**
     * new 一个person
     * @param entityDto
     * @return
     * @throws Hl7Exception
     */
    public Person newPerson(EntitysDTO entityDto) throws Hl7Exception;

    /**
     * 删除一个person(删除一个person时候删除person相关的所有数据)
     * @param person
     * @throws Hl7Exception
     */
    public void delPerson(Person person) throws Hl7Exception;


    /**
     * 修改Person
     * @param person
     * @param entitysDTO 需要修改的person值
     * @throws Hl7Exception
     */
    public void modifyPerson(Person person, EntitysDTO entitysDTO) throws Hl7Exception;


    /**
     * 构造person基本信息DTO
     * @param person 实例化的person对象
     * @return PatientBaseInfoDTO
     * @throws Hl7Exception
     */
    public PatientBaseInfoDTO constructorPatBaseInfo(Person person) throws Hl7Exception;



    /**
     * 根据一组实例化的person集合得到EntitysDTO集合
     * @param list person集合
     * @return List<EntitysDTO>
     * @throws Hl7Exception
     */
    public List<EntitysDTO> converPersonInfoList(List<Person> list) throws Hl7Exception;


    /**
     * 根据person构造一个EntitysDTO
     * @param person 实例化的person
     * @return EntitysDTO
     * @throws Hl7Exception
     */
    public EntitysDTO converPersonInfo(Person person) throws Hl7Exception;
    
    /**
     * 根据person，EntitysDTO构造一个EntitysDTO
     * @param entitysDTO
     * @param person
     * @return EntitysDTO
     * @throws Hl7Exception
     */
    public EntitysDTO converPersonInfo(EntitysDTO  entitysDTO ,Person person) throws Hl7Exception;


   /**
    * 构造person的证件集合
    * @param person 实例化的perosn
    * @return List<MedicalCardDTO>
    * @throws Hl7Exception
    */
    public List<MedicalCardDTO> constructorMedicalCardList(Person person) throws Hl7Exception;


   /**
    * 根据姓名 性别  出生日期确定一个person是否存在
    * @param personName 姓名
    * @param sex 年龄
    * @param birthDate 出身日期格式化字符串
    * @return Person
    * @throws Hl7Exception
    */
    public Person findSamePerson(String personName, String sex, String birthDate) throws Hl7Exception;


}
